Français Virtuose
  • Tags:

    No tags

  • Name:

    aExpressiveness

  • Displayed name:

    Expressivité

  • Description:

    Vous cessez de contenir ce que vous éprouvez et le laissez déborder sur ce qui vous entoure. Les créatures proches encaissent la même faiblesse que celle que votre posture vous impose : - **Rage** : malus de Résilience. - **Euphorie** : malus d'Arcane. - **Sérénité** : malus de Réflexe. - **Mélancolie** : malus de Vigueur. Le test à effectuer dépend lui aussi de la posture, et porte sur la caractéristique de test de l'émotion : **Vigueur** en Rage, **Réflexe** en Euphorie, **Résilience** en Sérénité, **Arcane** en Mélancolie. Vous pouvez dépenser des Points de l'émotion que vous tenez pour l'allonger : chaque Point ajoute 5 secondes et 1 mètre de rayon, sans coût de Flux supplémentaire. *Il faut être en posture émotionnelle pour utiliser cette action, et c'est la posture en cours qui détermine la caractéristique touchée.*

  • Cast description:

    | PA: vAP.string | TdR: vCD.strings | | :---: | :---: | | **Flux: vFluxOrCost.string ➞ vFluxCost.string** | **Portée: vRange.string** | @if vPosture.value == 0 then [[***Vous devez être en posture émotionnelle pour utiliser cette action.***]] else [[Sur un test de **vTest.string** réussi **MR vMR.string** [1d20] : Vous propagez votre **{({[[Rage]],[[Euphorie]],[[Sérénité]],[[Mélancolie]]})[vPosture.value]}**, ce qui réduit de **vMalus.string** la **{({[[Résilience]],[[Arcane]],[[Réflexe]],[[Vigueur]]})[vPosture.value]}** de toutes les créatures dans un rayon de **{1+vPoints.value}m** autour de vous, pendant **{10+vPoints.value*5} secondes**. *Les créatures affectées annulent tous les effets sur un test de {({[[Vigueur]],[[Réflexe]],[[Résilience]],[[Arcane]]})[vPosture.value]} réussi.*]] end

  • Condition:

    assert(vPosture.value > 0, [[Vous n'êtes pas en posture émotionnelle.]])
    assert(character.sFlux.current >= vFluxCost.value, [[Vous n'avez pas assez de Flux.]])
    assert(vPosture.value ~= 1 or vPoints.value <= character.sRagePoints.current, [[Vous n'avez pas assez de Points de Rage.]])
    assert(vPosture.value ~= 2 or vPoints.value <= character.sEuphoriaPoints.current, [[Vous n'avez pas assez de Points d'Euphorie.]])
    assert(vPosture.value ~= 3 or vPoints.value <= character.sSerenityPoints.current, [[Vous n'avez pas assez de Points de Sérénité.]])
    assert(vPosture.value ~= 4 or vPoints.value <= character.sMelancholyPoints.current, [[Vous n'avez pas assez de Points de Mélancolie.]])
  • AP cost:

    4

  • Cooldown:

    10

  • Flux cost:

    apMod(vAP)*cdMod(vCD)*sphereMod(1)*durMod(10)*effect(vMalus*45,22.5)*autoSave*cancelOnSave
  • Variables:

    vRange = ListVariable([[vRange]], [[Portée]], {[[selfMod]]}, {[[Soi]]})
    
    postureLabels = {[[Rage]], [[Euphorie]], [[Sérénité]], [[Mélancolie]]}
    pointStats = {[[sRagePoints]], [[sEuphoriaPoints]], [[sSerenityPoints]], [[sMelancholyPoints]]}
    
    postureIndex = 0
    if character:has([[mEmotionalPosture]]) then
        for i, label in pairs(postureLabels) do
            if string.find(character.mEmotionalPosture.displayName.value, label, 1, true) then
                postureIndex = i
            end
        end
    end
    vPosture = StatVariable([[vPosture]], postureIndex)
    
    if postureIndex > 0 and character:has(pointStats[postureIndex]) then
        vPoints = NumberVariable([[vPoints]], [[Points d'émotion]], [[0]], [[character.]] .. pointStats[postureIndex], [[1]])
    else
        vPoints = StatVariable([[vPoints]], 0)
    end
    
    vMalus = NumberVariable([[vMalus]], [[Malus]], [[1]], [[10]], [[1]])
    
    testStats = {[[character.sVigor]], [[character.sReflex]], [[character.sResilience]], [[character.sArcana]]}
    testLabels = {[[Vigueur]], [[Réflexe]], [[Résilience]], [[Arcane]]}
    testIndex = postureIndex
    if testIndex == 0 then
        testIndex = 1
    end
    vTest = ListVariable([[vTest]], [[Test]], {testStats[testIndex]}, {testLabels[testIndex]})
    vMR = StatVariable([[vMR]], [[vTest]])
    
  • On used script:

    character.sFlux:changeCurrent(-vFluxCost.value)
    
    if (vPosture.value == 1) then
        character.sRagePoints:changeCurrent(-vPoints.value)
    elseif (vPosture.value == 2) then
        character.sEuphoriaPoints:changeCurrent(-vPoints.value)
    elseif (vPosture.value == 3) then
        character.sSerenityPoints:changeCurrent(-vPoints.value)
    elseif (vPosture.value == 4) then
        character.sMelancholyPoints:changeCurrent(-vPoints.value)
    end
    
  • On post script:

    if (success) then
        action.currentCD.value = vCD.value
    end
    
  • Type:

    1

  • Action effects:

    • Use case:

      3

    • Name:

      Expressivité

    • Description:

    • Script:

      effect = character:createEffect([[mExpressiveness]])
      effect.displayName:set([[Expressivité : {{({[[Rage]],[[Euphorie]],[[Sérénité]],[[Mélancolie]]})[vPosture.value]}}]])
      effect.description:set([[Votre {{({[[Résilience]],[[Arcane]],[[Réflexe]],[[Vigueur]]})[vPosture.value]}} est réduite de {{vMalus.string}}.]])
      effect.duration:set({{10+vPoints.value*5}})
      effect.script:set([=[character.{{({[[sResilience]],[[sArcana]],[[sReflex]],[[sVigor]]})[vPosture.value]}}:addCurrent({{-vMalus.value}}, [[psychic]], modifier.displayName.value)]=])
      effect:activate()
      
    • Variables: